package com.itheima.commons;

import com.itheima.exception.BaseException;
import com.itheima.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

//1.定义全局异常处理器
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    //2.定义异常方法(处理整个项目所有的系统异常
    public Result exceptionHandler(Exception e) {
        e.printStackTrace();//建议打印异常信息到控制台，方便后续排查问题
        //3.异常处理逻辑
        //3.1打印异常信息
        log.error("服务器发生异常:{}", e.getMessage());

        //3.2通知运维人员和开发人员紧急修复
        log.info("邮件、微信通知运维人员和开发人员紧急修复");

        //3.3返回通用异常信息给前端
        return Result.error("请检查您的本地网络是否正常！！请稍后再试！");
    }


    //4.定义业务异常处理方法
    @ExceptionHandler(BaseException.class)
    public Result baseExceptionHandler(BaseException e) {
        //4.1打印异常信息
        log.error("业务异常:{}", e.getMessage());
        //4.2返回异常信息给前端
        return Result.error(e.getMessage());
    }


}
